This invention relates in general to the field of software systems, and more particularly to an improved system and method for communications in a distributed processing environment.
Object oriented programming is a method of programming that abstracts a computer program into manageable sections. The basis of object oriented programming is the concept of encapsulation. Encapsulation is a methodology that combines the subroutines, or methods, that manipulate data with the declaration and storage of that data. This encapsulation prevents the data from arbitrarily being accessed by other program subroutines, or objects. When an object is invoked, the associated data is available and can be manipulated by any of the methods that are defined within the object to act upon the data. The basic component of encapsulation is a class. A class is an abstraction for a set of objects that share the same structure and behavior. An object is a single instance of a class that retains the structure and behavior of the class. Objects also contain methods that are the processes that instruct an object to perform some procedure or manipulation of data that the object controls. Classes may also be characterized by their interface which defines the elements necessary for proper communication between objects.
Distributed computing allows an object on one computer system to seamlessly communicate with and manipulate an object contained in a second computer system when these computers are connected by a computer network. The second computer system may also be referred to as another address space. Sophisticated distributed computing systems have removed the communications burden from the computer programs, or objects in an object oriented programming environment, and placed it in a mid-level operating system that manages communications across a computer network to facilitate a client""s access to and manipulation of data contained on a server system. The server system could be a computer in a different address space and remote to a user on the client system.
Distributed computing and object oriented programming have led to the development of distributed object management systems. These distributed object management systems are generally referred to as object request brokers (ORBs). When an object on a client computer system requests access to an object that exists on a server computer system, the distributed object management system steps in to facilitate the communication between the two computer systems and, thus, between the two objects. The distributed object management system removes the requirement of the client object communicating directly with the server object. Instead, current distributed object management systems utilize a remote proxy object on the client system which models the interface of the server object. The client computer system that requested access to the server object, communicates with the remote proxy object that exists on the client computer system. Therefore, the client computer system can operate as if it is communicating directly with a local object. The remote proxy object contains the necessary communications information to allow the client computer system to access and manipulate an object that actually exists on the server computer system. Remote proxies allow the client system to disregard the location of the requested object and the communication details.
A proxy is an object that has an interface and method list identical to another object. However, it does not contain the same detailed computer code. Instead it contains communications requirements that allow the proxy to communicate directly with another object without knowledge of the requesting object. Proxies can be used to control access to certain objects. They may also be used to remove the labor of distributed processing communications from local objects. For example, if object A residing on a first computer system needs to communicate with object B residing on a second computer system, object A must know the location of object B and have the necessary computer code to initiate communications with object B. A proxy for object B located on the first computer system allows object A to simply communicate with the proxy of object B as if object B resided on the same computer. The proxy for Object B has all the necessary information and computer code to communicate with the real object B on the second computer system. This type of proxy is known as a remote proxy since it exists on a computer system remote from the computer system that contains the requested object.
Systems heretofore known have required all possible remote proxies to be built when the software system is initially compiled and loaded onto a computer. This process can be very time consuming and the resultant remote proxies can require large amounts of computer storage. In addition, software system designers must predict every possible remote proxy that may be needed in the future so that it can be built when the software system is loaded. This process does not allow a system to adapt to its usage and environment.
With the rise of distributed computing systems, client/server computing, and internet/intranet interactions, inter-node communications between applications and objects has become a necessity. Early operating systems lacked support for inter-application communications, forcing software developers to write custom code to perform a remote procedure call for each and every application that needed remote communications.
Distributed computing systems often use a client/server architecture. Typically, a client is an application that runs on a personal computer and relies on a server to perform some operations. The server is a computer on a network that manages network resources such as storage devices, printers, or network traffic. Client-side operations are those occurring on the client side of a client/server system. For example, on the world wide web, applets may be downloaded and executed on a client and are client-side operations. Server-side operations occur on the server of a client/server system. For example, management services performed by the server occur on the server machine and are server-side operations. Client/server systems require communications and operations to take place across a network. ORBs facilitate these communications and operations across the network.
Microsoft has developed DCOM (Distributed Component Object Model) to support inter-application communications across networked computer systems. Another technology standard for inter-object communications is CORBA (Common Object Request Broker Architecture) established by the Object Management Group (OMG) which is a consortium sponsored by many companies, including Digital Equipment Corporation, Hewlett Packard, IBM and Sun Microsystems, Inc. CORBA defines how messages from one object to another are to be formatted and how to guarantee delivery. The messaging in CORBA is performed by Object Request Brokers (ORBs). ORBs receive messages and determine location of the receiving object, route the message to the receiving object, and perform all necessary platform and language translations. In object oriented technology, a message is typically a request sent to an object to change its state or return a value. The object has encapsulated methods to implement the response to the received message. Through technology such as DCOM and CORBA, objects can communicate with remote objects residing in other computer platforms connected by a network. However, for communications between objects in separate computer platforms to take place, an ORB needs to exist on each computer platform to send and receive messages.
ORBs provide communications between client and server systems. The ORB should exist on both the client system and the server system before communications between a client object and a server object can commence. If a client system does not have an ORB, the ORB of the server system is generally uploaded to the client system before communications commence. The upload of the ORB over a common internet connection can be slow, lengthy, and monopolize considerable system resources.
Accordingly, a need has arisen for a system and method for communications in a distributed processing environment that minimizes the size of the object request broker uploaded to a client system.
According to one embodiment of the present invention, a system for communication in a distributed computing environment is provided that includes a server system having one or more server objects and a client system having a client application. The client system is linked to the server system by a network. An object request broker executes on the server system and provides server-side communications support. A light client executes on the client system and provides client-side communications support. The light client communicates with the object request broker to provide client system to server system communications. A light proxy is dynamically generated in response to a request from the client application for access to one of the one or more server objects. The light proxy is uploaded to the client system in response to the request for access from the client application. The light proxy further provides a local communication link between the client application and the requested server object.
The present invention provides various technical advantages over conventional systems for communication in a distributed computing environment. For example, one technical advantage is providing a reduced size communications support module to provide client side communications support in the distributed computing environment. In addition, the reduced size communications support module significantly reduces the time needed to upload an applet or application onto a client system. Other technical advantages may be readily apparent to one skilled in the art from the following figures, description and claims.